\hypertarget{class_a_s_t_node}{\section{A\+S\+T\+Node Class Reference}
\label{class_a_s_t_node}\index{A\+S\+T\+Node@{A\+S\+T\+Node}}
}


Abstract Syntax Tree Node.  




{\ttfamily \#include $<$A\+S\+T\+Node.\+h$>$}

\subsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
\hyperlink{class_a_s_t_node_a1196ed4f19c0b62cdc42fe35946b91d2}{A\+S\+T\+Node} ()
\begin{DoxyCompactList}\small\item\em \hyperlink{class_a_s_t_node}{A\+S\+T\+Node} default constructor. \end{DoxyCompactList}\item 
\hyperlink{class_a_s_t_node_a83f896f81cb587dac1c07ddc60d0bf18}{A\+S\+T\+Node} (std\+::string \hyperlink{class_a_s_t_node_a432e04f7a77fd5cc0c2b56d0cd30dfde}{name}, int \hyperlink{class_a_s_t_node_ac97e1fe3b390fdb1b2687c55044bbb42}{kind}, int \hyperlink{class_a_s_t_node_a26837b8b224142ab143a69643212e488}{type}, int \hyperlink{class_a_s_t_node_aae3c9d2b41ce6ba291a3b605c9eb34c5}{line\+Number})
\begin{DoxyCompactList}\small\item\em \hyperlink{class_a_s_t_node}{A\+S\+T\+Node} constructor. \end{DoxyCompactList}\item 
\hyperlink{class_a_s_t_node_a41a691f37fa038eb183280effeb8ba4e}{$\sim$\+A\+S\+T\+Node} ()
\begin{DoxyCompactList}\small\item\em \hyperlink{class_a_s_t_node}{A\+S\+T\+Node} destructor. \end{DoxyCompactList}\item 
void \hyperlink{class_a_s_t_node_a7798cbedd1944b006e4cd4ab81560901}{Add\+Sibling} (\hyperlink{class_a_s_t_node}{A\+S\+T\+Node} $\ast$\hyperlink{class_a_s_t_node_a84226c13622be7066f1cb22a083fda35}{sibling})
\begin{DoxyCompactList}\small\item\em Add sibiling to the current node. \end{DoxyCompactList}\item 
void \hyperlink{class_a_s_t_node_a87d22348e557f7978748c1083bcbfd1d}{Add\+Child} (\hyperlink{class_a_s_t_node}{A\+S\+T\+Node} $\ast$child)
\begin{DoxyCompactList}\small\item\em Add child to the current node. \end{DoxyCompactList}\item 
void \hyperlink{class_a_s_t_node_ada1da03eeb02751dc6a5ac2bce3c56d4}{Accept} (\hyperlink{class_i_visitor}{I\+Visitor} $\ast$visitor)
\begin{DoxyCompactList}\small\item\em Call the apropriate visit function of the visitor based on the node kind. \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Public Attributes}
\begin{DoxyCompactItemize}
\item 
std\+::string \hyperlink{class_a_s_t_node_a432e04f7a77fd5cc0c2b56d0cd30dfde}{name}
\begin{DoxyCompactList}\small\item\em Node name. \end{DoxyCompactList}\item 
\hyperlink{_common_8h_a54fdbf378167a255e7d14da2db6a5f75}{Kind} \hyperlink{class_a_s_t_node_ac97e1fe3b390fdb1b2687c55044bbb42}{kind}
\begin{DoxyCompactList}\small\item\em Node kind. \end{DoxyCompactList}\item 
\hyperlink{_common_8h_a7b97d4a9bb8e67a5f5257fe024b6a595}{Type} \hyperlink{class_a_s_t_node_a26837b8b224142ab143a69643212e488}{type}
\begin{DoxyCompactList}\small\item\em Node type. \end{DoxyCompactList}\item 
\hyperlink{class_value}{Value} \hyperlink{class_a_s_t_node_a1baef87f683b1a8c639420ed2a8dc23f}{value}
\begin{DoxyCompactList}\small\item\em Node value. \end{DoxyCompactList}\item 
int \hyperlink{class_a_s_t_node_aae3c9d2b41ce6ba291a3b605c9eb34c5}{line\+Number}
\begin{DoxyCompactList}\small\item\em Node line number declaration. \end{DoxyCompactList}\item 
\hyperlink{class_a_s_t_node}{A\+S\+T\+Node} $\ast$ \hyperlink{class_a_s_t_node_aaa1e479bfeb485d93a4866f9c2daf171}{parent}
\begin{DoxyCompactList}\small\item\em Pointer to node parent. \end{DoxyCompactList}\item 
\hyperlink{class_a_s_t_node}{A\+S\+T\+Node} $\ast$ \hyperlink{class_a_s_t_node_a0ee6fbcf102db5dfb1b8b47336bb9d24}{children}
\begin{DoxyCompactList}\small\item\em Pointer to node children. \end{DoxyCompactList}\item 
\hyperlink{class_a_s_t_node}{A\+S\+T\+Node} $\ast$ \hyperlink{class_a_s_t_node_a84226c13622be7066f1cb22a083fda35}{sibling}
\begin{DoxyCompactList}\small\item\em Pointer to node sibling. \end{DoxyCompactList}\end{DoxyCompactItemize}


\subsection{Detailed Description}
Abstract Syntax Tree Node. 

\begin{DoxyAuthor}{Author}
Caio Arce Nishibe (\href{mailto:caionishibe@gmail.com}{\tt caionishibe@gmail.\+com}) 
\end{DoxyAuthor}
\begin{DoxyDate}{Date}
August, 2014 
\end{DoxyDate}


\subsection{Constructor \& Destructor Documentation}
\hypertarget{class_a_s_t_node_a1196ed4f19c0b62cdc42fe35946b91d2}{\index{A\+S\+T\+Node@{A\+S\+T\+Node}!A\+S\+T\+Node@{A\+S\+T\+Node}}
\index{A\+S\+T\+Node@{A\+S\+T\+Node}!A\+S\+T\+Node@{A\+S\+T\+Node}}
\subsubsection[{A\+S\+T\+Node}]{\setlength{\rightskip}{0pt plus 5cm}A\+S\+T\+Node\+::\+A\+S\+T\+Node (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)}}\label{class_a_s_t_node_a1196ed4f19c0b62cdc42fe35946b91d2}


\hyperlink{class_a_s_t_node}{A\+S\+T\+Node} default constructor. 

Perform default initialization of the members. \hypertarget{class_a_s_t_node_a83f896f81cb587dac1c07ddc60d0bf18}{\index{A\+S\+T\+Node@{A\+S\+T\+Node}!A\+S\+T\+Node@{A\+S\+T\+Node}}
\index{A\+S\+T\+Node@{A\+S\+T\+Node}!A\+S\+T\+Node@{A\+S\+T\+Node}}
\subsubsection[{A\+S\+T\+Node}]{\setlength{\rightskip}{0pt plus 5cm}A\+S\+T\+Node\+::\+A\+S\+T\+Node (
\begin{DoxyParamCaption}
\item[{std\+::string}]{name, }
\item[{int}]{kind, }
\item[{int}]{type, }
\item[{int}]{line\+Number}
\end{DoxyParamCaption}
)}}\label{class_a_s_t_node_a83f896f81cb587dac1c07ddc60d0bf18}


\hyperlink{class_a_s_t_node}{A\+S\+T\+Node} constructor. 

Initialize members with given values. 
\begin{DoxyParams}{Parameters}
{\em name} & node name. \\
\hline
{\em kind} & node kind. \\
\hline
{\em type} & node type. \\
\hline
{\em line\+Number} & node declaration line number. \\
\hline
\end{DoxyParams}
\hypertarget{class_a_s_t_node_a41a691f37fa038eb183280effeb8ba4e}{\index{A\+S\+T\+Node@{A\+S\+T\+Node}!````~A\+S\+T\+Node@{$\sim$\+A\+S\+T\+Node}}
\index{````~A\+S\+T\+Node@{$\sim$\+A\+S\+T\+Node}!A\+S\+T\+Node@{A\+S\+T\+Node}}
\subsubsection[{$\sim$\+A\+S\+T\+Node}]{\setlength{\rightskip}{0pt plus 5cm}A\+S\+T\+Node\+::$\sim$\+A\+S\+T\+Node (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)}}\label{class_a_s_t_node_a41a691f37fa038eb183280effeb8ba4e}


\hyperlink{class_a_s_t_node}{A\+S\+T\+Node} destructor. 



\subsection{Member Function Documentation}
\hypertarget{class_a_s_t_node_ada1da03eeb02751dc6a5ac2bce3c56d4}{\index{A\+S\+T\+Node@{A\+S\+T\+Node}!Accept@{Accept}}
\index{Accept@{Accept}!A\+S\+T\+Node@{A\+S\+T\+Node}}
\subsubsection[{Accept}]{\setlength{\rightskip}{0pt plus 5cm}void A\+S\+T\+Node\+::\+Accept (
\begin{DoxyParamCaption}
\item[{{\bf I\+Visitor} $\ast$}]{visitor}
\end{DoxyParamCaption}
)}}\label{class_a_s_t_node_ada1da03eeb02751dc6a5ac2bce3c56d4}


Call the apropriate visit function of the visitor based on the node kind. 


\begin{DoxyParams}{Parameters}
{\em visitor} & Pointer to a class that implements the \hyperlink{class_i_visitor}{I\+Visitor} interface. \\
\hline
\end{DoxyParams}
\hypertarget{class_a_s_t_node_a87d22348e557f7978748c1083bcbfd1d}{\index{A\+S\+T\+Node@{A\+S\+T\+Node}!Add\+Child@{Add\+Child}}
\index{Add\+Child@{Add\+Child}!A\+S\+T\+Node@{A\+S\+T\+Node}}
\subsubsection[{Add\+Child}]{\setlength{\rightskip}{0pt plus 5cm}void A\+S\+T\+Node\+::\+Add\+Child (
\begin{DoxyParamCaption}
\item[{{\bf A\+S\+T\+Node} $\ast$}]{child}
\end{DoxyParamCaption}
)}}\label{class_a_s_t_node_a87d22348e557f7978748c1083bcbfd1d}


Add child to the current node. 


\begin{DoxyParams}{Parameters}
{\em child} & pointer to the child node. \\
\hline
\end{DoxyParams}
\hypertarget{class_a_s_t_node_a7798cbedd1944b006e4cd4ab81560901}{\index{A\+S\+T\+Node@{A\+S\+T\+Node}!Add\+Sibling@{Add\+Sibling}}
\index{Add\+Sibling@{Add\+Sibling}!A\+S\+T\+Node@{A\+S\+T\+Node}}
\subsubsection[{Add\+Sibling}]{\setlength{\rightskip}{0pt plus 5cm}void A\+S\+T\+Node\+::\+Add\+Sibling (
\begin{DoxyParamCaption}
\item[{{\bf A\+S\+T\+Node} $\ast$}]{sibling}
\end{DoxyParamCaption}
)}}\label{class_a_s_t_node_a7798cbedd1944b006e4cd4ab81560901}


Add sibiling to the current node. 


\begin{DoxyParams}{Parameters}
{\em sibling} & pointer to the sibling node. \\
\hline
\end{DoxyParams}


\subsection{Member Data Documentation}
\hypertarget{class_a_s_t_node_a0ee6fbcf102db5dfb1b8b47336bb9d24}{\index{A\+S\+T\+Node@{A\+S\+T\+Node}!children@{children}}
\index{children@{children}!A\+S\+T\+Node@{A\+S\+T\+Node}}
\subsubsection[{children}]{\setlength{\rightskip}{0pt plus 5cm}{\bf A\+S\+T\+Node}$\ast$ A\+S\+T\+Node\+::children}}\label{class_a_s_t_node_a0ee6fbcf102db5dfb1b8b47336bb9d24}


Pointer to node children. 

\hypertarget{class_a_s_t_node_ac97e1fe3b390fdb1b2687c55044bbb42}{\index{A\+S\+T\+Node@{A\+S\+T\+Node}!kind@{kind}}
\index{kind@{kind}!A\+S\+T\+Node@{A\+S\+T\+Node}}
\subsubsection[{kind}]{\setlength{\rightskip}{0pt plus 5cm}{\bf Kind} A\+S\+T\+Node\+::kind}}\label{class_a_s_t_node_ac97e1fe3b390fdb1b2687c55044bbb42}


Node kind. 

\hypertarget{class_a_s_t_node_aae3c9d2b41ce6ba291a3b605c9eb34c5}{\index{A\+S\+T\+Node@{A\+S\+T\+Node}!line\+Number@{line\+Number}}
\index{line\+Number@{line\+Number}!A\+S\+T\+Node@{A\+S\+T\+Node}}
\subsubsection[{line\+Number}]{\setlength{\rightskip}{0pt plus 5cm}int A\+S\+T\+Node\+::line\+Number}}\label{class_a_s_t_node_aae3c9d2b41ce6ba291a3b605c9eb34c5}


Node line number declaration. 

\hypertarget{class_a_s_t_node_a432e04f7a77fd5cc0c2b56d0cd30dfde}{\index{A\+S\+T\+Node@{A\+S\+T\+Node}!name@{name}}
\index{name@{name}!A\+S\+T\+Node@{A\+S\+T\+Node}}
\subsubsection[{name}]{\setlength{\rightskip}{0pt plus 5cm}std\+::string A\+S\+T\+Node\+::name}}\label{class_a_s_t_node_a432e04f7a77fd5cc0c2b56d0cd30dfde}


Node name. 

\hypertarget{class_a_s_t_node_aaa1e479bfeb485d93a4866f9c2daf171}{\index{A\+S\+T\+Node@{A\+S\+T\+Node}!parent@{parent}}
\index{parent@{parent}!A\+S\+T\+Node@{A\+S\+T\+Node}}
\subsubsection[{parent}]{\setlength{\rightskip}{0pt plus 5cm}{\bf A\+S\+T\+Node}$\ast$ A\+S\+T\+Node\+::parent}}\label{class_a_s_t_node_aaa1e479bfeb485d93a4866f9c2daf171}


Pointer to node parent. 

\hypertarget{class_a_s_t_node_a84226c13622be7066f1cb22a083fda35}{\index{A\+S\+T\+Node@{A\+S\+T\+Node}!sibling@{sibling}}
\index{sibling@{sibling}!A\+S\+T\+Node@{A\+S\+T\+Node}}
\subsubsection[{sibling}]{\setlength{\rightskip}{0pt plus 5cm}{\bf A\+S\+T\+Node}$\ast$ A\+S\+T\+Node\+::sibling}}\label{class_a_s_t_node_a84226c13622be7066f1cb22a083fda35}


Pointer to node sibling. 

\hypertarget{class_a_s_t_node_a26837b8b224142ab143a69643212e488}{\index{A\+S\+T\+Node@{A\+S\+T\+Node}!type@{type}}
\index{type@{type}!A\+S\+T\+Node@{A\+S\+T\+Node}}
\subsubsection[{type}]{\setlength{\rightskip}{0pt plus 5cm}{\bf Type} A\+S\+T\+Node\+::type}}\label{class_a_s_t_node_a26837b8b224142ab143a69643212e488}


Node type. 

\hypertarget{class_a_s_t_node_a1baef87f683b1a8c639420ed2a8dc23f}{\index{A\+S\+T\+Node@{A\+S\+T\+Node}!value@{value}}
\index{value@{value}!A\+S\+T\+Node@{A\+S\+T\+Node}}
\subsubsection[{value}]{\setlength{\rightskip}{0pt plus 5cm}{\bf Value} A\+S\+T\+Node\+::value}}\label{class_a_s_t_node_a1baef87f683b1a8c639420ed2a8dc23f}


Node value. 



The documentation for this class was generated from the following files\+:\begin{DoxyCompactItemize}
\item 
C\+:/\+Users/\+Caio/\+Dropbox/\+Mestrado/agents-\/language/\+Compiladores/\+Compiladores/\hyperlink{_a_s_t_node_8h}{A\+S\+T\+Node.\+h}\item 
C\+:/\+Users/\+Caio/\+Dropbox/\+Mestrado/agents-\/language/\+Compiladores/\+Compiladores/\hyperlink{_a_s_t_node_8cpp}{A\+S\+T\+Node.\+cpp}\end{DoxyCompactItemize}
